package com.mmy.dao.line;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.line.TLinePlan;

public interface TLinePlanRepository extends JpaRepository<TLinePlan, Integer> {
	/**
	 *  获取计划单最大值
	 * 
	 * @return 返回值说明 最大计划单编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.13
	 */
	@Query(value = "SELECT MAX(iPlanID) FROM tLinePlan WHERE LEFT(iPlanID,2) = RIGHT(YEAR(NOW()),2)", nativeQuery = true)
	Object getMaxPlanID();

	/**
	 * 函数功能说明：创建计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tLinePlan(iPlanID, cStandard, iLineID, dStartDate, dEndDate, fFloor, fPeer, fPrice, iNumber, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (?1, NULL, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(int planID);

	/**
	 * 函数功能说明：删除计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tLinePlan where iPlanID in (:lstPlanID)", nativeQuery = true)
	void delLinePlan(@Param("lstPlanID") List<Integer> lstPlanID);
	
	/**
	 * 函数功能说明：删除线路集合的计划
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 创建日期 修改时间 2021.01.27
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tLinePlan where iLineID in (:lstLineID)", nativeQuery = true)
	void delByLineIdList(@Param("lstLineID") List<Integer> lstPlanID);
	
	/**
	 * 函数功能说明：通过ID查询计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单对象
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	@Query(value = "select * from tLinePlan where iPlanID = ?1", nativeQuery = true)
	TLinePlan findByPlanID(int planID);
	
	/**
	 * 函数功能说明：查询有计划并且计划在有效期的 近郊游线路的 所有ID
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单对象
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 liys
	 * @date 创建日期 修改时间 2021.01.06
	 */
	@Query(value = "select DISTINCT p.iLineID  from tLinePlan p,tLineBase b where p.iLineID = b.iLineID and b.iType = 1 and now() between dStartDate and dEndDate", nativeQuery = true)
	List<Integer> findSurroudingNum();
	
}
